+2004-11-29 Matthias Clasen <mclasen@redhat.com>
+
+ * xdgmimeparent.c (_xdg_mime_parent_list_lookup):
+ * xdgmimealias.c (_xdg_mime_alias_list_lookup): Protect
+ against stupid bsearch() implementations. (#159737,
+ Morten Welinder)
+
2004-11-24 Matthias Clasen <mclasen@redhat.com>
* xdgmimeparent.c (_xdg_mime_parent_read_from_file):
XdgAlias *entry;
XdgAlias key;
- key.alias = (char *)alias;
- key.mime_type = 0;
-
- entry = bsearch (&key, list->aliases, list->n_aliases,
- sizeof (XdgAlias), alias_entry_cmp);
- if (entry)
- return entry->mime_type;
+ if (list->n_aliases > 0)
+ {
+ key.alias = (char *)alias;
+ key.mime_type = 0;
+
+ entry = bsearch (&key, list->aliases, list->n_aliases,
+ sizeof (XdgAlias), alias_entry_cmp);
+ if (entry)
+ return entry->mime_type;
+ }
return NULL;
}
XdgMimeParents *entry;
XdgMimeParents key;
- key.mime = (char *)mime;
- key.parents = NULL;
-
- entry = bsearch (&key, list->parents, list->n_mimes,
- sizeof (XdgMimeParents), &parent_entry_cmp);
- if (entry)
- return (const char **)entry->parents;
+ if (list->n_mimes > 0)
+ {
+ key.mime = (char *)mime;
+ key.parents = NULL;
+
+ entry = bsearch (&key, list->parents, list->n_mimes,
+ sizeof (XdgMimeParents), &parent_entry_cmp);
+ if (entry)
+ return (const char **)entry->parents;
+ }
return NULL;
}